﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace INSTA.BankSystem.DAL
{
  

    /// <summary>
    /// Attribut permettant de définir, pour une propriété,
    /// le champ de la BDD vers laquelle elle pointe, ainsi 
    /// que le fait de savoir si la propriété représente 
    /// la clé primaire de la table associée.
    /// </summary>
    [AttributeUsage(AttributeTargets.Property,
                    AllowMultiple   = false,
                    Inherited       = true)]
    public class FieldAttribute : Attribute
    {
        private string _fieldName;
        private bool _isPrimarykey;

        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="fieldName">Name of the field.</param>
        public FieldAttribute(string fieldName)
        {
            FieldName = fieldName;
        }

        /// <summary>
        /// Gets or sets the name of the field.
        /// </summary>
        public string FieldName
        {
            get { return _fieldName; }
            set { _fieldName = value; }
        }

        /// <summary>
        /// Determine si la propriété décorée avec 
        /// notre attribut représente la clé primaire 
        /// de la table.
        /// </summary>
        /// <value>
        ///   <c>true</c> if [is primarykey]; otherwise, <c>false</c>.
        /// </value>
        public bool IsPrimarykey
        {
            get { return _isPrimarykey;     }
            set { _isPrimarykey = value;    }
        }
    }
}
